key sequenceを貯めてstatus-barに表示してみるテスト
試したいこと
✅修飾キーとかも取得できるようにしたいかな?
やった
挙動
キーのログが表示される
3秒何も入力がなければ、一旦クリアする
<Esc>で終了
2024-05-24
2023-11-01
14:16:34 大文字に<S-を付けない
2022-03-14
08:49:51 やった
課題
特殊キーの変換をぜんぶちゃんとやる
✅大文字には<S-をつけない
内部表現は<C-W>に統一する
<C-w>や<c-W>や<c-w>にはしない
キーを指定する場合はどちらでも認識できるようにしておく
<S-C-z>も<C-S-z>もどちらでも検出できるようにするか?
そこまでしなくてもいいだろう
code:script.ts
import { useStatusBar } from "../scrapbox-userscript-std/dom.ts";
import { KeyWatcher } from "../KeyWatcher/mod.ts";
const { render, dispose } = useStatusBar();
let animationId: number | undefined;
const update = (text: string) => {
if(animationId !== undefined) cancelAnimationFrame(animationId);
animationId = requestAnimationFrame(() => render(
{ type: "text", text, }
));
}
const keyWatcher = new KeyWatcher()
try{
let timer: number | undefined;
for await(const sequence of keyWatcher.listen()) {
clearTimeout(timer);
if (sequence.endsWith("<Escape>")) break;
update(sequence);
timer = setTimeout(() => {
keyWatcher.reset();
update("");
}, 3000);
}
} catch (e) {
console.error(e);
} finally {
dispose();
}